/*
 * AvionBean.java
 *
 * Created on 27 de octubre de 2007, 01:53
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.fiuba.aterrizar.servidor.interfaz.bean;

import com.fiuba.aterrizar.servidor.conf.ObjectFactory;
import com.fiuba.aterrizar.servidor.dto.AvionDTO;
import com.fiuba.aterrizar.servidor.exception.AvionExistenteException;
import com.fiuba.aterrizar.servidor.service.AvionService;
import com.fiuba.aterrizar.servidor.service.impl.AvionServiceImpl;
import java.util.ArrayList;
import java.util.Collection;
import javax.faces.component.UIData;
import javax.faces.model.SelectItem;

/**
 *
 * @author Demian
 */
public class AvionBean {
    private Collection aviones;
    private Collection modelos;
    private String codigo;
    private String codigoAlta;
    private String modelo;
    private String modeloAlta;
    private String estado;
    private Collection estados;
    private UIData tableAviones; 
    private String cantidadAsientosPrimera;
    private String cantidadAsientosEjecutiva;
    private String cantidadAsientosTurista;
    private String errorAlta;
    private boolean deshabilitarBotonAlta = false;
    private boolean deshabilitarBotonModificar = true;
    
    
    public void seleccionModificar(){
        AvionDTO avion = (AvionDTO) getTableAviones().getRowData();
        setCodigoAlta(avion.getCodigo());
        setEstado(avion.getEstado());
        setModeloAlta(avion.getModelo());
        setCantidadAsientosEjecutiva(avion.getCantidadAsientosEjecutiva());
        setCantidadAsientosPrimera(avion.getCantidadAsientosPrimera());
        setCantidadAsientosTurista(avion.getCantidadAsientosTurista());
        deshabilitarBotonAlta = true;
        deshabilitarBotonModificar = false;
    }
    
    public void modificar(){
        AvionDTO avion = new AvionDTO();
        avion.setCantidadAsientosEjecutiva(getCantidadAsientosEjecutiva());
        avion.setCantidadAsientosPrimera(getCantidadAsientosPrimera());
        avion.setCantidadAsientosTurista(getCantidadAsientosTurista());
        avion.setCodigo(getCodigoAlta());
        avion.setEstado(getEstado());        
        avion.setModelo(getModeloAlta());
        
        AvionService avionService = (AvionService) ObjectFactory.getObject(AvionService.class);
        avionService.modificar(avion);
        
        deshabilitarBotonAlta = false;
        deshabilitarBotonModificar = true;
    }
    
    public boolean validateAlta(){
        if ((getCodigoAlta() == null) || (getCodigoAlta().length()==0)){
            return false;
        }
            
        return true;
    }
    
    public void alta(){
        setErrorAlta(null);
        if (validateAlta()){
            AvionDTO avion = new AvionDTO();
            AvionService avionService = (AvionService) ObjectFactory.getObject(AvionService.class);

            avion.setCodigo(getCodigoAlta());
            avion.setEstado(getEstado());
            avion.setModelo(getModeloAlta());
            avion.setCantidadAsientosEjecutiva(getCantidadAsientosEjecutiva());
            avion.setCantidadAsientosPrimera(getCantidadAsientosPrimera());
            avion.setCantidadAsientosTurista(getCantidadAsientosTurista());
            try {

                avionService.agregar(avion);
                setErrorAlta(null);
            } catch (AvionExistenteException ex) {
                setErrorAlta("ERROR: el avion ya existe");
            }
        }
        else{
            setErrorAlta("Faltan campos requeridos para el alta");
        }
    }
    
    public void eliminar(){
        AvionDTO avion = (AvionDTO) getTableAviones().getRowData();
        AvionService avionService = (AvionService) ObjectFactory.getObject(AvionService.class);
        avionService.eliminar(avion.getCodigo());
    }
    
    public Collection getAviones() {        
        if ((getModelo() != null) && (getModelo().length()==0)){
            setModelo(null);
        }
        if ((getCodigo() != null) && (getCodigo().length()==0)){
            setCodigo(null);
        }
        AvionService avionService = (AvionService) ObjectFactory.getObject(AvionService.class);
        return avionService.findAll(getModelo(), getCodigo());
    }

    public void setAviones(Collection aviones) {
        this.aviones = aviones;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    

    public Collection getModelos() {
        if (modelos == null){
            AvionService avionService = (AvionService) ObjectFactory.getObject(AvionService.class);
            modelos = avionService.findAllModelos();
        }
        return modelos;
    }

    public void setModelos(Collection modelos) {
        this.modelos = modelos;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public UIData getTableAviones() {
        return tableAviones;
    }

    public void setTableAviones(UIData tableAviones) {
        this.tableAviones = tableAviones;
    }

    public String getCantidadAsientosPrimera() {
        return cantidadAsientosPrimera;
    }

    public void setCantidadAsientosPrimera(String cantidadAsientosPrimera) {
        this.cantidadAsientosPrimera = cantidadAsientosPrimera;
    }

    public String getCantidadAsientosEjecutiva() {
        return cantidadAsientosEjecutiva;
    }

    public void setCantidadAsientosEjecutiva(String cantidadAsientosEjecutiva) {
        this.cantidadAsientosEjecutiva = cantidadAsientosEjecutiva;
    }

    public String getCantidadAsientosTurista() {
        return cantidadAsientosTurista;
    }

    public void setCantidadAsientosTurista(String cantidadAsientosTurista) {
        this.cantidadAsientosTurista = cantidadAsientosTurista;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Collection getEstados() {
        if (estados == null){
            estados = new ArrayList();
            estados.add(new SelectItem("L","Libre"));
            estados.add(new SelectItem("O","No disponible"));
        }
        return estados;
    }

    public void setEstados(Collection estados) {
        this.estados = estados;
    }

    public String getModeloAlta() {
        return modeloAlta;
    }

    public void setModeloAlta(String modeloAlta) {
        this.modeloAlta = modeloAlta;
    }

    public String getCodigoAlta() {
        return codigoAlta;
    }

    public void setCodigoAlta(String codigoAlta) {
        this.codigoAlta = codigoAlta;
    }

    public String getErrorAlta() {
        return errorAlta;
    }

    public void setErrorAlta(String errorAlta) {
        this.errorAlta = errorAlta;
    }

    public boolean isDeshabilitarBotonAlta() {
        return deshabilitarBotonAlta;
    }

    public void setDeshabilitarBotonAlta(boolean deshabilitarBotonAlta) {
        this.deshabilitarBotonAlta = deshabilitarBotonAlta;
    }

    public boolean isDeshabilitarBotonModificar() {
        return deshabilitarBotonModificar;
    }

    public void setDeshabilitarBotonModificar(boolean deshabilitarBotonModificar) {
        this.deshabilitarBotonModificar = deshabilitarBotonModificar;
    }
    
    

    
    
}
